/*
 * Título: gestHora. Aplicación web de gestión de horarios para conservatorios.
 * Alumnos:
 * - Javier Pardo Muñoz. I.T. Informática de Gestión
 * - Antonio Prior Cazorla. I.T. Informática de Gestión
 * Director: Dr. José Raúl Romero Salguero.
 *     
 *  Copyright (C) 2013 Javier Pardo Muñoz / Antonio Prior Cazorla
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

function listarAsignatura() {
    var newHTML;
    //Se recuperan los JSON donde estara la información de las asignaturas
    $.ajax({
        url: "/gestHora/jsp/controllers/gestionAsignaturaController.jsp",
        dataType: 'json',
        data: "tipo=listarAsignatura",
        async: false,
        success: function(json) {
            newHTML = "<h3>Listado actual de Asignatura</h3><form class='formVistasNoticia'>\n\
                        <label for='buscar'>Filtrado: </label><input type='text' name='buscar' value='' id='buscar' onkeypress='return event.keyCode!=13'/><br/><br/></form><table class = 'tablaView rowstyle-alt paginate-10 sortable-onload-show-2'><thead><tr><th class=sortable-text>ID</th><th class=sortable-text>Nombre</th><th class=sortable-text>Curso</th><th class=sortable-text>Especialidad</th><th>Editar</th><th>Eliminar</th></tr></thead>";
            $.each(json, function(i, asignatura) {
                newHTML += "<tr><td>" + asignatura.idAsignatura + "</td><td>" + asignatura.nombreAsignatura + "</td><td>" + asignatura.idCurso + "º </td><td>";
                $.ajax({
                    url: "/gestHora/jsp/controllers/gestionAsignaturaController.jsp",
                    dataType: 'json',
                    data: "tipo=listarEspecialidadAsignatura&id=" + asignatura.idAsignatura,
                    async: false,
                    success: function(data) {
                        $.each(data, function(i, especialidad) {
                            newHTML += especialidad.nombreEspecialidad + ", ";
                        });
                    }
                });
                newHTML += "</td><td><a href=javascript:void(0); onclick=editorAsignatura(" + asignatura.idAsignatura + "," + asignatura.idCurso + ");> <img src=/gestHora/img/editar.png alt=editar></a></td><td>" +
                        "<a href=javascript:void(0); onclick=confirmar(" + asignatura.idAsignatura + ");> <img src=/gestHora/img/eliminar.png alt=eliminar</a></td></tr>";


            });
            newHTML += "</table>";
            //enviamos la tabla a las View
            $("#tabla").html(newHTML);
            //Se crea el filtrado de la tabla
            creaFiltrado();
            tablePaginater.init();
            fdTableSort.init();
        }
    });
}



function editorAsignatura(id, curso) {

    $.ajax({
        url: "/gestHora/jsp/controllers/gestionAsignaturaController.jsp",
        dataType: 'json',
        data: "tipo=editarAsignatura&id=" + id,
        async: false,
        success: function(json) {
            $.each(json, function(i, asignatura) {
                $("#editarId").val(asignatura.idAsignatura);
                $("#editarNombre").val(asignatura.nombreAsignatura);
            });
        }
    });
    $('#formEditarAsignatura').fadeIn();
    $('#formNuevoAsignatura').fadeOut();
    rellenarSelectCursoEditarAsignatura(id, curso);
    rellenarSelectEditarEspecialidad();
}


function rellenarSelectEditarEspecialidad() {
    $('#selectEditarEspecialidad').empty();
    $.getJSON("/gestHora/jsp/controllers/gestionEspecialidadController.jsp", "tipo=listarEspecialidades", function(data) {
        $.each(data, function(i, especialidad) {
            $("<option value=" + especialidad.idEspecialidad + ">" + especialidad.nombreEspecialidad + "</option>").appendTo("#selectEditarEspecialidad");
        });
        $.getJSON("/gestHora/jsp/controllers/gestionAsignaturaController.jsp", "tipo=listarEspecialidadAsignatura&id=" + $("#editarId").val(), function(data1) {
            $.each(data1, function(i, asignatura) {
                $("#selectEditarEspecialidad option").each(function() {
                    if (asignatura.idEspecialidad == $(this).val()) {
                        $(this).attr("selected", "selected");
                    }
                });
            });
        });
    });
}

function rellenarSelectCursoEditarAsignatura(id, curso) {
    $("#editarSelectCurso").empty();
    $.getJSON("/gestHora/jsp/controllers/gestionAsignaturaController.jsp", "tipo=listarCurso&id=" + id, function(data) {
        $.each(data, function(i, asignatura) {
            if (asignatura.idCurso === curso) {
                $("<option value= " + asignatura.idCurso + " selected>" + asignatura.idCurso + "</option>").appendTo("#editarSelectCurso");
            } else {
                $("<option value= " + asignatura.idCurso + ">" + asignatura.idCurso + "</option>").appendTo("#editarSelectCurso");
            }
        });
    });

}

function rellenarSelectAsignatura() {

    $.getJSON("/gestHora/jsp/controllers/gestionAsignaturaController.jsp", "tipo=listarAsignatura", function(data) {
        $("<option value='null' selected>Seleccione una asignatura</option>").appendTo("#selectAsignatura");
        $.each(data, function(i, asignatura) {
            $("<option value= " + asignatura.idAsignatura + ">" + asignatura.nombreAsignatura + "</option>").appendTo("#selectAsignatura");
        });
    });
}

function rellenarSelectAsignaturaPorCursos(idCurso, idEspecialidad) {

    $('#selectAsignatura').empty();
    $("<option value='null' selected>Seleccione una asignatura</option>").appendTo("#selectAsignatura");
    $.getJSON("/gestHora/jsp/controllers/busquedaAsignaturaController.jsp", "tipo=listarAsignaturaPorCurso" + "&idCurso=" + idCurso + "&idEspecialidad=" + idEspecialidad, function(data) {
        $.each(data, function(i, asignatura) {

            $("<option value= " + asignatura.idAsignatura + ">" + asignatura.nombreAsignatura + "</option>").appendTo("#selectAsignatura");
        });


    });
}



function rellenarSelectFiltrarAsignaturaPorCursos(idCurso, idEspecialidad) {
    if (idCurso !== '' && idEspecialidad !== '') {
        $('#selectFiltrarAsignatura').empty();
        $("<option value='' selected>Seleccione una asignatura</option>").appendTo("#selectFiltrarAsignatura");
        $.getJSON("/gestHora/jsp/controllers/busquedaAsignaturaController.jsp", "tipo=listarAsignaturaPorCurso" + "&idCurso=" + idCurso + "&idEspecialidad=" + idEspecialidad, function(data) {
            $.each(data, function(i, asignatura) {

                $("<option value= " + asignatura.idAsignatura + ">" + asignatura.nombreAsignatura + "</option>").appendTo("#selectFiltrarAsignatura");
            });
        });
    }
}


function rellenarSelectFiltrarAsignatura() {

    $.getJSON("/gestHora/jsp/controllers/gestionAsignaturaController.jsp", "tipo=listarAsignatura", function(data) {
        $("<option value='null' selected>Seleccione una asignatura</option>").appendTo("#selectFiltrarAsignatura");
        $.each(data, function(i, asignatura) {
            $("<option value= " + asignatura.idAsignatura + ">" + asignatura.nombreAsignatura + "</option>").appendTo("#selectFiltrarAsignatura");
        });
    });
}

function recorrerTablaAsignatura(hora, dia, grupo, aula, duracion, nombre, apellido1, apellido2) {

    $('#tablaView tbody tr').each(function(i) {
        $(this).children("td").each(function(e) {
            if ((i + 1) === hora && e + 1 === dia) {
                $(this).html("<span class='tooltipHorario' href='javascript:void(0);'>" + "Grupo " + grupo + "<span> Profesor: " + nombre + " " + apellido1 + " " + apellido2 +
                        "<br/>Aula: " + aula + "<br/>Duración: " + duracion + " horas</span></span>");

                /*Si una asignatura dura más de una hora se combinan las celdas y se limpian las sobrantes*/
                if (duracion > 1) {
                    $(this).attr("rowspan", duracion);
                    for (x = i + 1; x < (i + duracion); x++) {
                        $('#tablaView tr:gt(' + x + ')').find("td").eq(e).hide();
                    }
                }
            }
        });
    });

}


function limpiarTabla() {
    var aux = 8;
    $("#tablaView > tbody").empty();
    for (i = 0; i < 13; i++) {
        //A las 15.00h no hay clase
        if (aux !== 15)
            $('#tablaView tbody').append('<tr><th>' + aux + ':00</th><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>');
        aux++;

    }
}

function rellenarTablaHorario(idAsignatura) {
    limpiarTabla();
    $.getJSON("/gestHora/jsp/controllers/busquedaAsignaturaController.jsp", "tipo=listarHorarioAsignatura&idAsignatura=" + idAsignatura, function(data) {
        $.each(data, function(i, horario) {
            recorrerTablaAsignatura(horario.idHora, horario.idDia, horario.numeroGrupo, horario.nombreAula, horario.duracion, horario.nombreProfesor, horario.apellido1Profesor, horario.apellido2Profesor);
        });

    });


}

function rellenarSelectAsignaturaProfesor(usuario){

    $.getJSON("/gestHora/jsp/controllers/listadoAlumnosController.jsp", "tipo=listarAsignaturas&usuario=" + usuario, function(data) {
        $("<option value='null' selected>Seleccione una asignatura</option>").appendTo("#selectFiltrarAsignatura");
        $.each(data, function(i, asignatura) {
            $("<option value= " + asignatura.idAsignatura + ">" + asignatura.nombreAsignatura + "</option>").appendTo("#selectFiltrarAsignatura");
        });
    });
}
